home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 501-525 / disk_511 / less / src / ttyin.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  1KB  |  74 lines

  1. /*
  2.  * Routines dealing with getting input from the keyboard (i.e. from the user).
  3.  */
  4.  
  5. #ifdef AMIGA
  6. /* Compile with -HPreHeader.q to get "less.h"! */
  7. #else
  8. #include "less.h"
  9. #endif
  10.  
  11. /*
  12.  * The boolean "reading" is set true or false according to whether
  13.  * we are currently reading from the keyboard.
  14.  * This information is used by the signal handling stuff in signal.c.
  15.  * {{ There are probably some race conditions here
  16.  *    involving the variable "reading". }}
  17.  */
  18. public int reading;
  19.  
  20. #ifndef AMIGA
  21. static int tty;
  22. #endif
  23.  
  24.  
  25. /*
  26.  * Open keyboard for input.
  27.  * (Just use file descriptor 2.)
  28.  */
  29. #ifdef __STDC__
  30. void open_getchr (void)
  31. #else
  32.         public void
  33. open_getchr()
  34. #endif
  35. {
  36. #ifdef AMIGA
  37.         ttopen();
  38. #else
  39.         tty = 2;
  40. #endif
  41. }
  42.  
  43. /*
  44.  * Get a character from the keyboard.
  45.  */
  46. #ifdef __STDC__
  47. int getchr (void)
  48. #else
  49.         public int
  50. getchr()
  51. #endif
  52. {
  53.         char c;
  54.         int result;
  55.  
  56.         reading = 1;
  57.         do
  58.         {
  59.                 flush();
  60. #ifdef AMIGA
  61.                 c = ttgetc();
  62.                 result = 1;
  63. #else
  64.                 result = read(tty, &c, 1);
  65. #endif
  66.         } while (result != 1);
  67.         reading = 0;
  68. #ifdef EIGHTBIT
  69.         return (int) c;
  70. #else
  71.         return (c & 0177);
  72. #endif
  73. }
  74.